# conding = utf-8
import jsonpath


# assert_utils

def assert_result(resp, assert_expression: str):
    '''
    根据规则提取到响应结果中的数据，进行断言
    注意：只能通过表达式获取到固定值，不能获取对象进行断言
    :param resp: 响应结果
    :param assert_expression: 提取的规则
    :return:
    '''
    # 获取到指定字符的下标位置
    index = assert_expression.find("$")
    # 获取到用例中的jsonpath表达式
    expression = assert_expression[index:len(assert_expression) - 1]
    # 根据表达式从响应中提取结果
    value = jsonpath.jsonpath(resp, expression)
    # 如果根据表达式获取值是没有找到的，那么就不需要进行匹配预期结果，直接返回false
    # 表示断言失败
    if value is False:
        return False
    value = value[0]
    # 将表达式替换成实际结果
    result = assert_expression.replace(str(expression),str(value))
    return eval(result)
